/*
 * Copyright (c) 2023.11.29 Fengxun
 * Version:5.2.2
 */

// type=150  凯撒密码游戏
const {
  getCheckpointList,
  saveCheckpointList,
  getCheckpointByID,
  doTaskOperation
} = require("../../utils/initdata")

const {
  getPageConfig,
  saveRemoteRecord,
  saveRemoteGold
} = require("../../utils/custom_loading")

const {
  DefaultItemType,
  RightItemType,
  RedoItemType,
  getNextFlowItemByType,
} = require("../../utils/task")

const {
  getLocalConfig,
  setLocalConfig
} = require("../../utils/plugin_g150")

Page({

  /**
   * 页面的初始数据
   */
  data: {
    step: -1,
    input_answer: '',
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    // 页面UI配置
    const config = getPageConfig('task')
    if (config) {
      this.setData({
        config: config
      })
    }

    // 页面显示数据
    this.checkpoint_list = getCheckpointList()
    this.checkpoint = getCheckpointByID(this.checkpoint_list, options.id)
    const task = this.checkpoint.workflow.flow[this.checkpoint.workflow.step]

    // 随机照片
    if (task.front_image === '') {
      console.log(task)
      if (task.front_image_list !== undefined) {
        const image_index = Math.floor(Math.random() * task.front_image_list.length)
        task.front_image = task.front_image_list[image_index]
        saveCheckpointList(this.checkpoint_list)
      }
    }

    this.setData({
      isWelcome: wx.getStorageSync('welcome'),
      checkpoint: this.checkpoint,
      task
    })

    this.getTask()
  },

  getTask() {
    // 当前配置
    const config = getLocalConfig()
    // console.log(config)
    const profile = config.process[config.step]

    this.setData({
      profile,
      step: config.step
    })
  },

  onInputChange(e) {
    this.setData({
      input_answer: e.detail.value
    })
  },

  onNextStep() {
    const config = getLocalConfig()
    config.step++
    setLocalConfig(config)
    this.setData({
      step: config.step,
      input_answer: ''
    })

    this.getTask()
  },

  onEndTask() {
    const task = this.data.task
    const profile = this.data.profile

    let flow_item = {}
    if (this.data.input_answer === profile.output) { // 回答正确

      if (task.item_list !== undefined) {
        // 如果有分支，提取分支流程
        flow_item = getNextFlowItemByType(task, RightItemType)

        // 保存下一步流程
        this.checkpoint.workflow.flow = flow_item.flow
        this.checkpoint.workflow.step = 0
      } else {
        // 没有分支，当前流程下一步
        this.checkpoint.workflow.step++
      }
    } else { // 回答错误
      console.log('回答错误', this.data.input_answer)
      if (task.item_list !== undefined) {
        // 如果有分支，提取分支流程
        // step 1: 提取重玩分支
        flow_item = getNextFlowItemByType(task, RedoItemType)
        if (!flow_item) {
          // 重玩提示
          return wx.showToast({
            title: flow_item.content,
            icon: 'error'
          }, 2000)
        }

        // step 2：没有重玩，提取默认分支
        flow_item = getNextFlowItemByType(task, DefaultItemType)
        if (!flow_item) {
          // 保存下一步流程
          this.checkpoint.workflow.flow = flow_item.flow
          this.checkpoint.workflow.step = 0
        } else {
          // 没有任何分支，自动重玩
          return wx.showToast({
            title: '答错了',
            icon: 'error'
          }, 2000)
        }
      } else {
        // 回答错误，没有定义分支，自动重玩
        return wx.showToast({
          title: '答错了',
          icon: 'error'
        }, 2000)
      }
    }

    const config = getLocalConfig()

    // 保存进度显示UI
    config.process[config.step].answer = this.data.input_answer

    // 处理晋级书
    doTaskOperation(this.checkpoint_list, config.process[config.step].operation)

    // 进入下一步
    config.step++

    // 保存plugin配置
    setLocalConfig(config)

    // 保存checkpoint数据
    saveCheckpointList(this.checkpoint_list)

    // 导航到task
    wx.redirectTo({
      url: '../main/task?id=' + this.checkpoint.code,
    })
  },

  onEndTask2() {
    const task = this.data.task
    const config = getLocalConfig()

    // task进入下一步
    if (task.item_list !== undefined) {
      // 如果有分支，提取分支流程
      flow_item = getNextFlowItemByType(task, RightItemType)

      // 保存下一步流程
      this.checkpoint.workflow.flow = flow_item.flow
      this.checkpoint.workflow.step = 0
    } else {
      // 没有分支，当前流程下一步
      this.checkpoint.workflow.step++
    }

    // 密码游戏进入下一步
    doTaskOperation(this.checkpoint_list, config.process[config.step].operation)
    config.step++

    // 保存plugin配置
    setLocalConfig(config)

    // 保存checkpoint数据
    saveCheckpointList(this.checkpoint_list)

    // 导航到task
    wx.redirectTo({
      url: '../main/task?id=' + this.checkpoint.code,
    })
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})